Application specific integrated circuits (ASICs) must be tested under a variety of circumstances. For example, during development, an ASIC generally requires thorough testing and debugging to verify or fix the design of the integrated circuit. During production, ASICs generally must be tested to separate good chips from bad chips. During use, an ASIC is often tested to determine whether the integrated circuit is functioning properly in a system.
One method for testing an ASIC during production uses a traditional ASIC tester such as an Agilent 83000 F330 to apply test patterns to the terminals of the ASIC. The test patterns ideally exercise all of the functional paths of the ASIC and can uncover any defects in the ASIC. Developing the test patterns required for thorough testing can take significant development effort. In particular, developing a test pattern that exercises all functional paths in multiple functional units including embedded memory can be difficult. Additionally, when an ASIC includes an interface to external memory, the test patterns must emulate the external memory, and developing a test pattern that emulates the timing of a high-speed external memory can be time consuming particularly when the ASIC uses a serial interface to reduce pin count.
Even if an exhaustive test pattern is developed, running through a complex test pattern during testing of an ASIC generally requires time, which potentially increases the manufacturing cost of the ASIC. Less exhaustive test patterns can reduce test times, but simpler test patterns may not catch as many defects, resulting in more defective chips being delivered to customers.
Another limitation of ASIC tests requiring a tester is that such tests are limited to production or development of the ASICs and generally are impractical for testing of an ASIC in commercial product or system. Accordingly, ASICs need at least two types of tests, a test implemented with an external tester and a built-in self-test (BIST) that the ASIC performs in a product. Developing both tests requires duplicated effort and expense.
BIST tests are generally implemented using special BIST logic that applies deterministic signal patterns in an attempt to exercise the logic paths. Developing BIST logic that performs exhaustive tests is difficult both because there is no guarantee that the paths exercised are the actual functional paths and because creating the test logic often requires specialized design tools. Once produced, such logic is often complicated, increases the ASICs size and cost, and can be overhead that decreases the ASICs performance.
In view of the difficulties involved in testing, more efficient testing methods and structures are sought for testing ASICs during development, production, and use.